package com.ruoyi.basedata.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.basedata.domain.UsersXb;
import com.ruoyi.basedata.domain.vo.UserTerminalsVO;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;

import java.util.List;

/**
 * 小用户档案Mapper接口
 *
 * @author ruoyi
 * @date 2023-09-07
 */
public interface UsersXbMapper extends BaseMapper<UsersXb>
{
    /**
     * 查询小用户档案
     *
     * @param ID 小用户档案主键
     * @return 小用户档案
     */
    public UsersXb selectUsersXbByID(Long ID);

    /**
     * 查询小用户档案列表
     *
     * @param usersXb 小用户档案
     * @return 小用户档案集合
     */
    public List<UsersXb> selectUsersXbList(UsersXb usersXb);

    /**
     * 新增小用户档案
     *
     * @param usersXb 小用户档案
     * @return 结果
     */
    public int insertUsersXb(UsersXb usersXb);

    /**
     * 修改小用户档案
     *
     * @param usersXb 小用户档案
     * @return 结果
     */
    public int updateUsersXb(UsersXb usersXb);

    /**
     * 删除小用户档案
     *
     * @param ID 小用户档案主键
     * @return 结果
     */
    public int deleteUsersXbByID(Long ID);

    /**
     * 批量删除小用户档案
     *
     * @param IDs 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteUsersXbByIDs(Long[] IDs);

    /**
     * 查找用户下所有关联的设备
     * @param userId
     * @return
     */
    public List<UserTerminalsVO> getOwnUserTerminalList(@Param("userId") String userId);

    /**
     * 查找该用户影响公摊的设备
     * @param userId
     * @return
     */
    public List<UserTerminalsVO> getpublicTerminalList(@Param("userId") String userId);
    /**
     * 查找该用户影响公摊的消费用户设备
     * @param userId
     * @return
     */
    public List<UserTerminalsVO> getpublicUserTerminalList(@Param("userId") String userId);
    /**
     * 查找该用户离场时，所有相关的水表设备在某段时间内没有读数的
     * @param userId
     * @return
     */
    public List<UserTerminalsVO> getUserWaterTerminalListForNoH(@Param("userId") String userId,@Param("departureTime") String departureTime,@Param("day") int day);
    /**
     * 查找该用户离场时，所有相关的水表设备在某段时间内没有读数的
     * @param userId
     * @return
     */
    public List<UserTerminalsVO> getOtherWaterTerminalListForNoH(@Param("userId") String userId,@Param("departureTime") String departureTime,@Param("day") int day);

    /**
     * 查找该用户离场时，所有相关的电表设备在某段时间内没有读数的
     * @param userId
     * @return
     */
    public List<UserTerminalsVO> getUserElectricityTerminalListForNoH(@Param("userId") String userId,@Param("departureTime") String departureTime,@Param("day") int day);
    /**
     * 查找该用户离场时，所有相关的电表设备在某段时间内没有读数的
     * @param userId
     * @return
     */
    public List<UserTerminalsVO> getOtherElectricityTerminalListForNoH(@Param("userId") String userId,@Param("departureTime") String departureTime,@Param("day") int day);

}
